/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package beans;

import Utilidades.ExibirMensagens;
import Utilidades.VariaveisEstaticas;
import dominio.Despesafuncionario;
import dominio.Funcionario;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.xml.crypto.Data;
import negocio.ManterDespesaFuncionarioNegocio;
import negocio.ManterFuncionarioNegocio;

/**
 *
 * @author Kelvin Kirk
 */
@ManagedBean
@SessionScoped
public class ManterDespesaFuncionarioBean {
    private Funcionario funcionario;
    private ManterDespesaFuncionarioNegocio manterDespesaFuncionarioNegocio;
    private ManterFuncionarioNegocio manterFuncionarioNegocio;
    private Despesafuncionario despesafuncionario;
    private Date data_pag;
    private String valor_dinheiro;
    private String cod_funcionario;
    private String cod_cheque;
    private boolean exibetabela;

    private List<Despesafuncionario> despesafuncionarios;
    private List<Funcionario> listaFuncionarios;

    public ManterDespesaFuncionarioBean(){
        iniciarAtributos();
    }

    public void iniciarAtributos(){
        manterDespesaFuncionarioNegocio = new ManterDespesaFuncionarioNegocio();
        despesafuncionario = new Despesafuncionario();
        despesafuncionarios = new ArrayList<Despesafuncionario>();
        listaFuncionarios = manterFuncionarioNegocio.findFuncionarioEntities();
        data_pag = null;
        valor_dinheiro = "";
        cod_cheque = "";
        cod_funcionario = "";
        exibetabela = false;
    }

    public void create(){
        despesafuncionario.setValorDinheiro(Double.parseDouble(valor_dinheiro));
        despesafuncionario.setDataPag(data_pag);
        
        int res = manterDespesaFuncionarioNegocio.create(despesafuncionario);

        exibetabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(0)});
                iniciarAtributos();
                break;
            case VariaveisEstaticas.ERRO_DUPLICACAO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(0), new Integer(0), new Integer(0)});
                break;
            case VariaveisEstaticas.ERRO_BD:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    public void edit(){
        despesafuncionario.setValorDinheiro(Double.parseDouble(valor_dinheiro));
        despesafuncionario.setDataPag(data_pag);
        //despesafuncionario.setFuncionario(funcionario.getCodigoFuncionario());
        int res = manterDespesaFuncionarioNegocio.edit(despesafuncionario);

        exibetabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(1)});

                // Caso ele consiga excluir o produto, então essa variável irá receber true para desabilitar o botão.
                //produto = new Produto();
                iniciarAtributos();
                break;

            case VariaveisEstaticas.ERRO_DUPLICACAO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(7), new Integer(0), new Integer(0)});
                break;
            case VariaveisEstaticas.ERRO_BD:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    public void destroy(){
        int res = manterDespesaFuncionarioNegocio.destroy(despesafuncionario);

        exibetabela = false;
        switch (res) {
            case VariaveisEstaticas.SUCESSO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.INFORMATIVA, "SUCESSO", new Integer[]{new Integer(7), new Integer(1)});

                // Caso ele consiga excluir o produto, então essa variável irá receber true para desabilitar o botão.
                //produto = new Produto();
                iniciarAtributos();
                break;

            case VariaveisEstaticas.ERRO_DUPLICACAO:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(7), new Integer(0), new Integer(0)});
                break;
            case VariaveisEstaticas.ERRO_BD:
                ExibirMensagens.exibirMensagens(VariaveisEstaticas.ERRO, "ERRO", new Integer[]{new Integer(1), new Integer(1), new Integer(1)});
                break;
        }
    }

    public String getCod_cheque() {
        return cod_cheque;
    }

    public void setCod_cheque(String cod_cheque) {
        this.cod_cheque = cod_cheque;
    }

    public String getCod_funcionario() {
        return cod_funcionario;
    }

    public void setCod_funcionario(String cod_funcionario) {
        this.cod_funcionario = cod_funcionario;
    }

    public Date getData_pag() {
        return data_pag;
    }

    public void setData_pag(Date data_pag) {
        this.data_pag = data_pag;
    }

    public Despesafuncionario getDespesafuncionario() {
        return despesafuncionario;
    }

    public void setDespesafuncionario(Despesafuncionario despesafuncionario) {
        this.despesafuncionario = despesafuncionario;
    }

    public List<Despesafuncionario> getDespesafuncionarios() {
        return despesafuncionarios;
    }

    public void setDespesafuncionarios(List<Despesafuncionario> despesafuncionarios) {
        this.despesafuncionarios = despesafuncionarios;
    }

    public boolean isExibetabela() {
        return exibetabela;
    }

    public void setExibetabela(boolean exibetabela) {
        this.exibetabela = exibetabela;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public List<Funcionario> getListaFuncionarios() {
        return listaFuncionarios;
    }

    public void setListaFuncionarios(List<Funcionario> listaFuncionarios) {
        this.listaFuncionarios = listaFuncionarios;
    }

    public ManterDespesaFuncionarioNegocio getManterDespesaFuncionarioNegocio() {
        return manterDespesaFuncionarioNegocio;
    }

    public void setManterDespesaFuncionarioNegocio(ManterDespesaFuncionarioNegocio manterDespesaFuncionarioNegocio) {
        this.manterDespesaFuncionarioNegocio = manterDespesaFuncionarioNegocio;
    }

    public ManterFuncionarioNegocio getManterFuncionarioNegocio() {
        return manterFuncionarioNegocio;
    }

    public void setManterFuncionarioNegocio(ManterFuncionarioNegocio manterFuncionarioNegocio) {
        this.manterFuncionarioNegocio = manterFuncionarioNegocio;
    }

    public String getValor_dinheiro() {
        return valor_dinheiro;
    }

    public void setValor_dinheiro(String valor_dinheiro) {
        this.valor_dinheiro = valor_dinheiro;
    }

    
}
